home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_09_11 / 9n11062a < prev    next >
Text File  |  1991-03-02  |  2KB  |  133 lines

  1.  
  2. /*
  3.  *    xaw1.c
  4.  *    Athena Widget test Program
  5.  *    using Athena Widgets
  6.  *
  7.  *    NOTE: If you are compiling under Release 4
  8.  *    of X, be sure to define X11R4.
  9.  *
  10.  *    Written for C Users Journal
  11.  *
  12.  */
  13.  
  14. #include  <stdio.h>
  15. #include  <X11/Intrinsic.h>
  16. #include  <X11/StringDefs.h>
  17.  
  18. /*
  19.  *    Comment out if you are running
  20.  *    on a system earlier than 
  21.  *    Release 4
  22.  */
  23. #define X11R4
  24.  
  25. /*
  26.  *    Release 4 has Athena include
  27.  *    files in new places.
  28.  */
  29. #ifdef X11R4
  30. #include  <X11/Xaw/Command.h>
  31. #include  <X11/Xaw/Paned.h>
  32. #include  <X11/Xaw/Label.h>
  33.  
  34. #else    /* older than Release 4 */
  35.  
  36. #include  <X11/Command.h>
  37. #include  <X11/Paned.h>
  38. #include  <X11/Label.h>
  39. #endif
  40.  
  41.  
  42. /* ARGSUSED */
  43. void quit_callback( widget, client_data, call_data )
  44.  
  45. Widget    widget;
  46. caddr_t    client_data; 
  47. caddr_t    call_data;
  48.  
  49. /*
  50.  *    Callback function to quit program.
  51.  *    We could close the connection to
  52.  *    the X server here, or just call exit().
  53.  */
  54.  
  55. {    /* quit_callback */
  56.  
  57.     exit( 0 );
  58.  
  59. }    /* quit_callback */
  60.  
  61.  
  62.  
  63. main( argc, argv )
  64.  
  65. int    argc;
  66. char    *argv[];
  67.  
  68. {    /* main */
  69.     Widget          parent;
  70.     Arg        args[20];
  71.     int        n;
  72.     Widget          pane_widget, quit_widget; 
  73.     Widget        label_widget;
  74.  
  75.  
  76.     /*
  77.      * Set up top-level shell widget
  78.      */
  79.     parent = XtInitialize( argv[0],
  80.             "Xaw1", NULL,
  81.             0, &argc, argv );
  82.  
  83.  
  84.     /*    
  85.      * Set up pane to control whole application
  86.      */
  87.     n = 0;
  88.     pane_widget = XtCreateManagedWidget( "pane",
  89.             panedWidgetClass,
  90.             parent, args, n );
  91.  
  92.     /*
  93.      * Set up command widget to 
  94.      * act as a push button
  95.      */
  96.     n = 0;
  97.     quit_widget = XtCreateManagedWidget( "quit", 
  98.             commandWidgetClass,
  99.             pane_widget, args, n );
  100.  
  101.      /*
  102.      * Set up a callback function
  103.      * to be called whenever
  104.      * the command push button is
  105.      * "activated".
  106.      */
  107.     XtAddCallback( quit_widget, XtNcallback, 
  108.         quit_callback, (caddr_t) NULL );
  109.  
  110.  
  111.     /*
  112.      * Set up label widget 
  113.      */
  114.     n = 0;
  115.     XtSetArg( args[n], XtNlabel, "This is a label." ); n++;
  116.  
  117.     label_widget = XtCreateManagedWidget( "label", 
  118.             labelWidgetClass,
  119.             pane_widget, args, n );
  120.  
  121.     /*
  122.      * Map widgets and handle events
  123.      */
  124.     XtRealizeWidget( parent );
  125.     XtMainLoop();
  126.  
  127. }    /* main */
  128.  
  129. /*
  130.  *    end of file
  131.  */
  132.  
  133.